#ifndef pack_configure_limit
#define pack_configure_limit
#include"configure/switch.hpp"
#include"macro/xexport.hpp"

namespace mixc::configure_limit::origin::limit{
    enum __mixc_limit_t{
        max_thread                          = 65536,
        max_handler                         = 65536,
        max_thread_stack_size               = 65536, // 64KB

        adapter_format_output_stream_buffer = 256,


        // gc begin ======================================
        #if xuse_mixc_rtos
        max_gc_filter_queue_depth           = 256,
        #else
        max_gc_filter_queue_depth           = 65536 / 2,
        #endif

        max_gc_free_list_queue_depth        = 8,
        max_gc_queue_threshold              = max_gc_filter_queue_depth / 128,
        // gc end ========================================

        algo_longest_common_substring       = 128,
        lang_cxx_private_cxx_helper         = 128,
        lang_cxx_encode_item_as             = 128,
        lang_cxx_replace                    = 128,
        lang_cxx_slice                      = 128,

        io_private_path_buffer              = 256,
        io_private_dir_foreach_template     = 256,
        io_private_dir_create               = 256,

        #if xuse_mixc_rtos
        graphic_private_rander_helper_mix_buffer    = 64,
        graphic_private_rander_helper_bits_array    = 512,
        #else
        graphic_private_rander_helper_mix_buffer    = 128,
        graphic_private_rander_helper_bits_array    = 2048,
        #endif

        utils_stream_wrapper_output    = 128,
    };
}

#endif

xexport_space(mixc::configure_limit::origin)
